بسم الله الرحمن الرحيم
 لوحة تحكم العضو تفضل بالتسجيل لدينا التقويم بحث عن أعضاء آخرين منتدى فيجوال بيسك أسئلة وأجوبة بحث في المنتديات الصفحة الرئيسية خروج
منتـــدى فيـجــوال بيـســك منتـــدى فيـجــوال بيـســك أقسام فيجوال بيسك العامة قسم نقاش فيجوال بيسك العام سلسلة دروس تعلــم إنشاء كائنات Activex
عدد الصفحات » (4): 1   2   3       الموضوع السابق   الموضوع التالي
الكاتب
الموضوع أكتب موضوع جديد    أكتب رد

fawaz2000
مبرمج محترف

تاريخ التسجيل » Nov 2001
البلد » اليمن - صنعاء
عدد المشاركات » 297
بمعدل » 0.43 مشاركة لكل يوم
سلسلة دروس تلعم أنشاء كائنات Activex

بسم الله الرحمن الرحيم
إخواني الكرام نضرا لكثر الأسئلة في المنتدى حول كيفية إنشاء ملفات Ocx لذلك سوف أقوم بوضع سلسة من التعليمات التي أعرفها حول برمجة كائنات ocx وأتمنا من جميع الأخوة الكرام من من لديهم خبرة في برمجه هذه الكائنات المشاركة معي في طرح هذا الموضوع بأسلوب علمي سهل وشيق يصل إلى المبتدئ بسهولة ويسر .

في لبداية سوف نتعرف على هذه الكائنات والوظيفة التي تقوم بها وفق مجال سلسة الدروس التي سوف أقوم بوضعها أن شاء الله ، وستكون الدروس أن شاء الله حول برمجة الكائنات بالتحديد الأزرار .
-------------------------------------------------------------------------------------------
تقنية OCX - وبداية ظهور Activex :
إن ثورة التقنيات لـ Visual basic Microsoft بدأت مع الإصدار الأول وأخذت تنموا بالتدريج حتى كانت الثورة الثانية في الإصدار الرابع حيث في هذا الإصدار تم تغير محركEngine (وهوا الملف الذي يدعم البرامج أثناء تشغيلها ويسمى VVBRUN والذي كان مبني على تقنية 16-Bit ويعرف باسم Ruby والذي قام بابتكاره (الآن كوبر ) الأب الروحي لـ Visual basic) وفي بداية ظهور تقنية 32-Bit (Windows95 & WindowsNt) قامت Microsoft ببناء محرك جديد أسمته Object Basic والذي يعرف الآن باسم VBA وكان أهم ما في هذا المحرك هوا دعمه لتقنية COM .
وكان مع الإصدار الرابع على مطوري Visual basic دعم أدوات التحكم الخاصة Custom Controls ولم تكن VBX صالحة لذلك لا شكلاً ولا مضمونا , وكان البديل لذلك هوا دعم هذه الأدوات عن طريق تقينه OLE 2 ولكن لم تفي تقنية OLE 2 باحتياجات Visual basic لذلك تم تطوير OLE في صورة ابتكار أداة تحكم قائمة على OLE سميت (ocx)

ومع تتطور أنظمة التشغيل التي تعمل على تقنية 32-Bit وانتشارها , ومع ظهور لغات برمجة الانترنت المختلفة , قامت Microsoft بتغير هندسة تقنية ocx لتصبح صالحة للاستخدام على الشبكات وبخاصة شبكة الانترنت وقد قامت الشركة أيضاُ بتغير اسم التقنية من OLE والتي بنيت عليها ocx إلىActiveX .
ومن هنا بدأت الثورة الحقيقة لمبرمجين Visual Basic وهي إتاحة تطوير الأدوات Activex لتكون أسهل الطرق لإنتاج كائنات جديدة أو برمجة صفحات الويب بواسطة هذه التقنية .
--------------------------------------------
وضيفة Activex :
سنتحدث كما ذكرت سابقاً عن طرق كيفية إنتاج كائنات ، واقصد بالكائن أداه جديدة سنقوم ببرمجتها ونقوم بالتعامل معها كتلك التي هي موجودة في صندوق الأدوات مثل زر الأمر Command Button أو أداة النص Label وغيرها من الكائنات(الأدوات) .
وحينما نتحدث عن إنتاج كائن جديد سوف بلا شك ستظهر لهذا الكائن خصائص Properties خاصة به , ووضائف (طرق) Methods , و أحداث Events معينة لهذا الكائن الجديد , لذلك سوف نقوم ببرمجة هذه الأحداث والطرق والخصائص كي يتمكن من سيستخدم هذا الكائن من المبرمجين التحكم بالكائن حسب الرغبة .
وهنا نحن في هذه الحالة سوف نطلق على أنفسنا مصممين الأداة بينما من سيستخدمها هوا المبرمج ولكي يتبين الأمر سوف أأخذ على سبيل المثال زر الأمر Command Button الموجود في صندوق الأدوات , نحن عندما نقوم بوضع هذا الزر على الـForm لنا حرية التحكم بتغير الحجم أو اسم الزر أو عنوانه وهذه العمليات تتم عن طريق الخصائص الموجودة للزر والتي قام بتصميمها مبرمجو الفيجول بيسك وتركوا للمبرمج حرية التحكم به عن طريق الخصائص . أيضاُ لجعل هذا الزر ينفذ عمل معين حسب رغبة المبرمج لذلك قام مصمم الأداة بوضع أحداث معينة لهذا الزر وهذه الأحداث : منها من هوا المسئول عن تنفيذ عمل معين إذا قام المستخدم بالنقر على الزر أو ضغط أحد المفاتيح .... وغيرها من الأحداث والتي سوف نتناول أن شاء الله الكثير من التفاصيل عنها في الدروس القادمة في قسم برمجة الأحداث .
بعد أن قمنا بتوضيح الفرق بين المبرمج والمصمم سوف ننطلق في بحر كائنات Activex كمصممين , وباعتقادي أن المصمم هوا أعلى درجة من المبرمج لأن المصمم هوا الذي سيقوم بتقديم كائن جديد للمبرمج ليقوم باستخدامه وفق الشروط التي قام بوضعها المبرمج على الأداة وأقصد بالشروط هي طرق التعامل مع الكائن .
--------------------------------------------
الشروط التي يجب توافرها في المصمم :
هناك بعض الاستحباب لمن أراد أن يتقن هذه التقنيات والتي جمعتها حسب اعتقادي على شكل نقاط كما يلي :

1 - أن يكون ملماُ بأوامر ومصطلحات البرمجة وفاهم عمل الخصائص والوظائف العامة للكائنات لان المصمم في هذه الحالة هوا الذي سيقوم ببرمجة خصائص جديدة وطرق وأحداث لذلك يجب أن يعرف الغرض من هذه العمليات .

2- أن يجيد التعامل مع الإجراءات والدوال والخوارزميات .
3- معرفة التعامل مع الوحدات النمطية Module و الفئات Class , على سبيل الاستحباب لإنتاج كائن ذو كفاءة عالية .
4- أن تتوفر لدية الخبرة في التعامل مع دوال API كي يتم بناء كائن أقل هدرا لذاكرة الحاسوب وأكثر كفاءة في التعامل .

ولا أقصد أن من لم يجيد هذه الشروط هوا من يستطيع عمل هذه الكائنات وإنما هوا على سبيل ذكر من أراد الخبرة في التعامل مع هذه التقنية , ويكفي لبناء كائن بسيط فهم أساسيات معينة فقط ثم بعد ذلك يمكن لمن أراد التعمق مع هذه الأدوات أن يتحلى بهذه الشروط .

فإن كنت مهتما بها فلننطلق معاً لفهم أساسيات تصميم الكائنات ولننطلق من فئة المبرمجين إلى فئة المصممين.
في الدرس القادم إن شاء الله سوف نتعرف بشكل عملي كيفية عمل أدوات ocx , وبعد شرح الطرق سنقوم ببرمجة زر مشابه لأزرار برنامج Sub7 من الصفر باستخدام دوال Api .

ملاحظة : المصطلحات السابقة يمكنك البحث عنها في المنتدى أو أحد المراجع لفهم عمل تلك التقنيات فما يهمنا هوا كل ما يتعلق بكائنات ocx حتى لا يتشعب الموضوع.
الشرح والبرمجة باستخدام Microsoft Visual Basic 6 .

أتمنا من المشرفين تثبيت الموضوع لتعم الفائدة
-------------------------------------------------------------------
مراجع لبعظ الأدوات المنشئة بهذه التقنية :
للأستاذ رغيد الطيب :شريط تقدم للعمليات
http://www.vb4arab.com/vb/showthread.php?s=&threadid=28854
زر من أزرار الوندوز شبيه بزر وندوز أكس بي
http://www.vb4arab.com/vb/showthread.php?s=&threadid=17536
نفس الزر مع بعض الإضافات
http://www.vb4arab.com/vb/showthread.php?s=&threadid=25448
-------------------------------------------------------------------


__________________
الإيمان يمان والحكمة يمانية

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

fawaz2000 غير متصل Old Post 05-07-2003 06:42 PM
إضغط هنا لمشاهدة هوية fawaz2000 إضغط هنا لإرسال رسالة شخصية لــ fawaz2000 إضغط هنا لإرسال بريد لــ fawaz2000 تفضل بزيارة صفحة fawaz2000 إبحث عن مواضيع fawaz2000 أضف fawaz2000 إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

سمير عبد الواحد
يرجوا رحمة الله

تاريخ التسجيل » Mar 2002
البلد » جمهورية مصر العربية - القاهرة
عدد المشاركات » 976
بمعدل » 1.79 مشاركة لكل يوم
السلام عليكم ورحمة الله وبركاته

جزاكم الله خيراً أخى fawaz2000
نحن فى أنتظار باقى الدروس


__________________
العلم يرفع بيوتاً لا عماد لها والجهل يخفض بيت العز والكرم
تفضلوا بزيارة موقعنا الصحابة للبرمجيات http://www.elsahaba.com/
مطلوب مندوبين فى السعوديه ودول الخليج
نسخه من برنامج المبيعات والموردين والعملاء والمستودعات مطلوب موزعين
تفضلوا نسخه من برنامج الوسيط للرد الآلى لمكاتب العقارات
هديتى المتواضعه لكم كل أكواد برامجى مجاناً
تفضلوا هدية العيد كود برنامج للعقارات به كل ما تريد من أوامر قواعد البيانات
هدية للمبتدئين كود برنامج راتب الموظفين
برنامج تسجيل ملفات صيانة الألات والسيارة
تفضلوا نسخه من برنامج الجدول المدرسى الأصدار الاول وعرض الكود للبيع
تفضلوا نسخه من برنامج مخازن ورش الحديد

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

سمير عبد الواحد غير متصل Old Post 05-07-2003 07:06 PM
إضغط هنا لمشاهدة هوية سمير عبد الواحد إضغط هنا لإرسال رسالة شخصية لــ سمير عبد الواحد إضغط هنا لإرسال بريد لــ سمير عبد الواحد تفضل بزيارة صفحة سمير عبد الواحد إبحث عن مواضيع سمير عبد الواحد أضف سمير عبد الواحد إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

CODE1
SAMI IBRAHEM

تاريخ التسجيل » Nov 2001
البلد » السعودية
عدد المشاركات » 237
بمعدل » 0.36 مشاركة لكل يوم

بارك الله فيك , وبانتظار المزيد


__________________
EMail: sirs123@hotmail.com
-------------------------------------------
أخي المسلم ... هل تعلم انك تملك سلاحين على العدو الأمريكي لكنك قليلا ما تستخدمه , أتدري ما هما ؟؟؟

الدعــــــــــــــــــــــــــاء
والمقاطـــــــــعــــــــــــة

فادعوا عليهم اخي وقاطعهم قدر المستطاع , ولا تحتقر حجمك في اقتصاد الاعداء .
------------------------------------------------------------
أداة رسم المعادلات

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

CODE1 غير متصل Old Post 05-07-2003 09:18 PM
إضغط هنا لمشاهدة هوية CODE1 إضغط هنا لإرسال رسالة شخصية لــ CODE1 إضغط هنا لإرسال بريد لــ CODE1 إبحث عن مواضيع CODE1 أضف CODE1 إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

fawaz2000
مبرمج محترف

تاريخ التسجيل » Nov 2001
البلد » اليمن - صنعاء
عدد المشاركات » 297
بمعدل » 0.43 مشاركة لكل يوم

السلام عليكم ورحمة الله وبركاته

شكراً لكم أخواني سمير و CODE1 وأتمنى من الله أن أفيد هذا المنتدى مما تعلمت لتعم الفائدة وليكتبها الله في ميزان حسناتي إن شاء الله .

الدرس الثاني :
سنتحدث في هذا الدرس عن كيفية التعامل مع Activex والتعرف على الخصائص الخاصة به والواجهة الخاصة بالتصميم :

طرق تصميم أدوات Activex :

تصميم يستخدم محليا:
أي تكون محتواه مع البرنامج الرئيسي وفي هذه الحالة لا يمكن أن يستخدمها أحد سوى المصمم لأنها تدمج مع الملف التنفيذي , للبرنامج .
تصميم مستقل :
وفي هذه الحالة يتم إنشائها لغرض الاستخدام العام حيث يتم تصريفها ككائن مستقل ذو امتداد (ocx) مثلاً (MyActivex.ocx) ولكي يتم استخدامها من قبل مبرمج أخر يجب أن يقوم باستدعائها أولا على البرنامج ثم يقوم بالاستخدام , ولكي يتم استدعائها قم بالضغط على الأزرار التالية Ctrl + t) ) بعد ظهور نافذة (Components)اختر استعراض (Browse.. ) ثم اختر الأداة التي أنشئت لتظهر لك في قائمة بها مجموعة من الكائنان من هنا نستطيع اختيارها , لتظهر في صندوق الأدوات كاده يستخدمها المبرمج في برنامجه .

تصميم أدوات Activex للاستخدام العام :

قم بفتح Microsoft Visual Basic في بداية التشغيل ستجد مجموعة من المشاريع اختر منها ActiveX Control بعد فتح المشروع لاحظ في نافذة متصفح المشاريع (Project Explorer)ظهور مجلد أسمة User Control يحوي على نافذة اسمها UserControl قم بالنظر إلى خصائص هذه النافذة , كذلك تعرف على الأحداث العامة لها . ولكي يتم تصريف هذه الأداة (ActiveX) إلى ملف ذو امتداد (ocx) اختر من ملف(File) -(Make Project ocx) بعد ذلك يمكن إحضارها إلى مشروعك كمستخدم لها بنفس الخطوات السابقة.

تصميم أدوات Activex للاستخدام المحلي :
وإن شاء الله سنقوم بالتصميم محلياً وذلك كي نتمكن من اختبار الكائن الجديد مباشرة من البرنامج الرئيسي حيث تظهر الأداة تلقائيان في صندوق الأدوات لنقوم بوضعها على الـForm دون الحاجة إلى تصريفها , وبعد أن ننجح في عملنا سوف نقوم بتصريف الكائن الجديد للاستخدام العام كما سيأتي لاحقاً .

البدء في مشروع يحتوي على كائن Activex :
سوف نبدأ الآن بالتعامل مع هذا الكائن تحت التصميم المحلي :
قم بفتح Visual Basic واختر مشروع من نوع (Standard EXE) بعد ذلك سنقوم بإضافة كائن ActiveX إلى المشروع كما يلي :
تعرفنا قبل قليل على أن النافذة الخاصة بالتصميم أسمها user Control سنقوم بإضافتها كما يلي :
من قائمة Project اختر --- Add User Control , بعد ذلك ستظهر لك نافذة اختر منها UserControl , بعد ذلك سوف يظهر في متصفح المشاريع مجلد جديد واسمه
User Control تحت مجلد Forms ويحوي النافذة التي سوف نتعامل معها والتي تحمل اسم UserControl1 .

ولان بعد أن تعرفنا على كيفية فتح مشروع لتصميم المحلي أو( الخاص) سنبدأ بالتعرف على كيفية وضع هذه الأداة على الـForm1
لعمل ذلك : قم بإغلاق نافذة User Control ثم توجه (قم بفتح) إلى نافذة الـForm1
انظر إلى صندوق الأدوات سوف تلاحظ ظهور كائن جديد يحمل نفس أيقونة نافذة user control قم بوضع هذا الكائن على النموذج (Form1) بطبيعة الحال لا يحتوي الكائن على أي شيء لأننا لم نقم بعد بتصميمه , فقط أنضر إلى الخصائص التي يحتويها الكائن وهذه الخصائص افتراضية وهي :

code:
Name
Causesvalidation
DragIcon
DragMode
Height
HelpContextId
Index
Left
TabIndex
TabStop
Tag
ToolTipText
Top
Visible
WhatsThisHelpID
Width


تعتبر هذه الخصائص الافتراضية للكائن ثابتة:
أي كثير الاستخدام وترك حرية إضافة خصائص جديدة للكائن أو مماثلة للخصائص التي تتبع نافذة التصميم أي كأن تضيف خاصية BackColor والتي تتحكم بلون خلفية الزر وبطبيعة الحال خلفية الزر هي عبارة عن خلفية نافذة التصميم usercontrol1 لذلك سنحتاج أن نبرمج خاصية جدية معتمدة على خاصية نافذة التصميم BackColor كي تظهر مع الخصائص السابقة للكائن , حتى يتمكن المبرمج من تغير لون خلفية الكائن .

لذلك نستطيع تقسيم (برمجة) الخاصية إلى :
1- خاصية تتعلق بنافذة التصميمusercontrol1 مثل :
ForColor, BackColor, Font , Enable , FullColor .... وغيرها من الخصائص .
2- خاصية تتعلق بأداة أخرى تم وضعها في نافذة التصميم :
أولاً يجب أن أنوه أن نافذة التصميم(usercontrol1) شبيه بنافذة النموذج (Form) من حيث وضع الكائنات عليها مثل زر أمر أو صندوق نص وغيرها من الكائنات , غير أن نافذة Form تظهر خصائص الكائن (مثلاً Command) بشكل منفصل عن خصائصها . بينما نافذة التصميم UserControl تدمج خصائص الكائن الموضع بداخلها مع الخصائص الجديدة تحت اسم الكائن المصمم ، فمثلاً لو قمنا بوضع صندوق نص(TextBox) على نافذة التصميم UserControl ثم بعد ذلك أغلقنا نافذة التصميم وفتحنا نافذة الـForm سنلاحظ ظهور صندوق النص في الأداة الجديدة وعند النظر إلى الخصائص نلاحظ عدم وجود الخصائص المتعلقة بصندوق النص , وقد يحتاج المبرمج مثلاً أن يستخدم هذا الكائن المنشأ كصندوق يتم به وضع كلمة السر , لذلك نحتاج نحن المصممون أن نتيح هذه الخاصية للمبرمج ليستخدمها حسب الرغبة , لذلك سوف نقوم ببرمجة خاصية تحمل اسم PasswordChar ونضيفها مع الخصائص المذكورة سابقاً , وهذه الخاصية سوف تسند أو تعطي للخاصية PasswordChar التابعة لصندوق النص .
3- خاصية جديدة من إنتاج المصمم :
وهذا النوع يحدد وضيفة عمل هذه الخاصية المصمم(المبرمج) للكائن فمثلاً :
لو قمنا بعمل خوارزمية معينة لتشفير النص , هذا العمل يتطلب أن نظهر خاصية للمبرمج (مستخدم الكائن) جديدة تحمل قيم معينة مثلاً True أو False ونسمي هذه الخاصية مثلاً Notation , وبهذا العمل أعطينا المستخدم للكائن خاصية جديدة تتحكم بتشفير النص وجعلنا لمستخدم لكائن حرية الاختيار إما أن يشفر النص أولا . و سوف بالطبع تظهر هذه الخاصية الجديدة مع الخصائص المذكورة سابقاً .

بعد أن تعرفنا على الخصائص وتقسيمها سوف نواصل الحديث عن بقية متطلبات الكائن الجديد في الدرس القادم والذي سنتحدث فيه عن الأحداث , فائدتها , وكيفية فهم عملها وكيف تم عملها . ثم نبدأ خطوة خطوة بإنتاج خصائص للكائن ..... الخ .

-----------------------------------------
سنقوم بوضع أول مثال على برمجة الخصائص : نفس صندوق النص المستخدم في برنامج Sub7 أرفقت صورة توضح شكل صندوق النص والزر الذي سنقوم ببرمجته .
لذلك أتمنا من الأخوة الكرام البحث عن البرنامج الإصدار الأخير حتى نتعرف مع بعض عن الخصائص والأحداث التي استخدمت في إنتاج الأزرار وصناديق النص . حيث سيكون الشرح منصب على كيفية عملها .
----------------------------------------
في هذا الدرس تعرفنا على نافذة التصميم UserControlوالفرق بين نافذة UserControl و نافذة Form , وأخذنا نضرة سريعة على الخصائص وكيف ظهورها على الكائن ومدى الحاجة لها .

هذا الدرس من اجتهادي فقد أخطاء وقد أصيب فأتمنا منكم العون على تصحيح الأخطاء
ودمتم برعاية الله وحفظة والسلام عليكم ورحمة الله وبركاته , وإلى درس قريب بإذن الله تعالي .
أخوكم : فواز الشمري


__________________
الإيمان يمان والحكمة يمانية

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

fawaz2000 غير متصل Old Post 07-07-2003 07:47 AM
إضغط هنا لمشاهدة هوية fawaz2000 إضغط هنا لإرسال رسالة شخصية لــ fawaz2000 إضغط هنا لإرسال بريد لــ fawaz2000 تفضل بزيارة صفحة fawaz2000 إبحث عن مواضيع fawaz2000 أضف fawaz2000 إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

fawaz2000
مبرمج محترف

تاريخ التسجيل » Nov 2001
البلد » اليمن - صنعاء
عدد المشاركات » 297
بمعدل » 0.43 مشاركة لكل يوم

هذا يبين الكائن بعد إنتاجة للإستخدام العام والذي سنقوم ببرمجة للإستخدام الخاص.

لتنزيل الملف المرفق أنقر الرابط التالي: buttonsub7byfawaz.zip بلا مسؤلية على المنتدى إن كان المرفق يحتوي على فيروسات أو وسائل تجسس
تم تحميل هذا الملف 163 مرة.


__________________
الإيمان يمان والحكمة يمانية

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

fawaz2000 غير متصل Old Post 07-07-2003 07:54 AM
إضغط هنا لمشاهدة هوية fawaz2000 إضغط هنا لإرسال رسالة شخصية لــ fawaz2000 إضغط هنا لإرسال بريد لــ fawaz2000 تفضل بزيارة صفحة fawaz2000 إبحث عن مواضيع fawaz2000 أضف fawaz2000 إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

fawaz2000
مبرمج محترف

تاريخ التسجيل » Nov 2001
البلد » اليمن - صنعاء
عدد المشاركات » 297
بمعدل » 0.43 مشاركة لكل يوم

عذار فقد نسيت إرفاق الصورة للبرنامج الذي سنقوم ببرمجة ازرار سبيه به

قام العضو ( fawaz2000 ) بإرفاق الصورة التالية:


__________________
الإيمان يمان والحكمة يمانية

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

fawaz2000 غير متصل Old Post 07-07-2003 07:59 AM
إضغط هنا لمشاهدة هوية fawaz2000 إضغط هنا لإرسال رسالة شخصية لــ fawaz2000 إضغط هنا لإرسال بريد لــ fawaz2000 تفضل بزيارة صفحة fawaz2000 إبحث عن مواضيع fawaz2000 أضف fawaz2000 إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

h_a_c_k_e_r_g_y
مبرمج وخبير بالهكرز

تاريخ التسجيل » Nov 2001
البلد » Syria
عدد المشاركات » 812
بمعدل » 1.20 مشاركة لكل يوم
السلام عليكم

الله يعطيك العافية وشكرا لك

والى الامام


__________________
_-_المعرفة هي القوة_-_
لدي خبرة في الهاكرز والكراكرز
hackergy@hotvoice.com
--<برامجي>--
برنامج رمضاني + تقنية تشغيل صوت مستخرج من EXE
للأخوان الجدد بـ VBفتح صفحة انترنت + ارسال بريد الكتروني
اذا اردت ان يتوقف برنامجك لفترة تفضل دالة التأخير الزمني
تريد التحكم بقواعد بيانات عن طريق الأداة Data ؟ أنظر هنا
الآن كيفية التحكم بقاعدة بيانات عن بعد(على الشبكة المحلية أو الانترنت) مع التحقق بكلمة مرور للمستخدم

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

h_a_c_k_e_r_g_y غير متصل Old Post 07-07-2003 09:59 AM
إضغط هنا لمشاهدة هوية h_a_c_k_e_r_g_y إضغط هنا لإرسال رسالة شخصية لــ h_a_c_k_e_r_g_y إضغط هنا لإرسال بريد لــ h_a_c_k_e_r_g_y إبحث عن مواضيع h_a_c_k_e_r_g_y أضف h_a_c_k_e_r_g_y إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

سمير عبد الواحد
يرجوا رحمة الله

تاريخ التسجيل » Mar 2002
البلد » جمهورية مصر العربية - القاهرة
عدد المشاركات » 976
بمعدل » 1.79 مشاركة لكل يوم
السلام عليكم ورحمة الله وبركاته

جزاكم الله خيراً أخى والجميع ينتظر الدرس الجديد
ولكن الصورة المرفقه لم تظهر
السلام عليكم


__________________
العلم يرفع بيوتاً لا عماد لها والجهل يخفض بيت العز والكرم
تفضلوا بزيارة موقعنا الصحابة للبرمجيات http://www.elsahaba.com/
مطلوب مندوبين فى السعوديه ودول الخليج
نسخه من برنامج المبيعات والموردين والعملاء والمستودعات مطلوب موزعين
تفضلوا نسخه من برنامج الوسيط للرد الآلى لمكاتب العقارات
هديتى المتواضعه لكم كل أكواد برامجى مجاناً
تفضلوا هدية العيد كود برنامج للعقارات به كل ما تريد من أوامر قواعد البيانات
هدية للمبتدئين كود برنامج راتب الموظفين
برنامج تسجيل ملفات صيانة الألات والسيارة
تفضلوا نسخه من برنامج الجدول المدرسى الأصدار الاول وعرض الكود للبيع
تفضلوا نسخه من برنامج مخازن ورش الحديد

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

سمير عبد الواحد غير متصل Old Post 07-07-2003 10:45 AM
إضغط هنا لمشاهدة هوية سمير عبد الواحد إضغط هنا لإرسال رسالة شخصية لــ سمير عبد الواحد إضغط هنا لإرسال بريد لــ سمير عبد الواحد تفضل بزيارة صفحة سمير عبد الواحد إبحث عن مواضيع سمير عبد الواحد أضف سمير عبد الواحد إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

fawaz2000
مبرمج محترف

تاريخ التسجيل » Nov 2001
البلد » اليمن - صنعاء
عدد المشاركات » 297
بمعدل » 0.43 مشاركة لكل يوم

بسم الله الرحمن الرحيم
شكراُ لكم إخواني : ويبدو ان قرائي هم من ذوي الخبرات :
فعذراُ منكم فقد أذكر أحيانا بعض المعلومات تكون قد مرت عليكم, ولكن فقط اذكرها مراعياً المبتدئين , الذين لم أرى لهم وجود, فتدريجياُ سأنتقل بالمعلومات إلى الأهمية فقط .

الدرس الثالث :
الأحداث
لكل كائن حدث وهذا الحدث مسئول عن عمل معين في لحظة معينة أي يقوم بتنفيذ مهمة (كود) في حال وقع علية حدث ما .
ولكي نستوعب الأمر جيداً سنأخذ مجوعة من الأحداث على سبيل التوضيح :

1- الحدث الأول KeyDown :

code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

End Sub

هذا الحدث هوا المسئول عن تنفيذ مهمة معينة في حال كان مفتاح من أزرار الكيبور مضغوط (أو مجموعة من المفاتيح)
وأجزاء هذا الحدث هي :
1 - KeyCode As Integer
يمثل شفرة مفتاح , مثل( VbKeyF1) (المفتاح) F1 أو vbKeyHome (المفتاحHome ) وغيرها من المفاتيح
يمكنك تطبيق ذلك كما يلي :
نفذا هذا الكود في الحدث التابع للـ Form1 ثم ضع الكود التالي في الحدث :
code:
Me.Caption = vbKeyF1

بعد ذلك قم بشغيل البرنامج وضغط على المفتاح F1 لتلاحظ النتيجة على عنوان النافذة Form1.
لمعرفة المزيز عن الثوابت المقابلة للمفاتيح قم بالضغط على زر Ctr والمسافة لتضهر لك قائمة بها مجموعة من الأوامر اكتب أول الحروف Key بعد ذلك ستسرد لك القائمة مجموعة
من ثوابت المفاتيح , حيث أن جميع مفاتيح الكيبورد موجودة في هذه الثوابت ولا ثمثل ( الأحرف ) فقط مفاتيح من F1 إلى F12 و مفاتيح الأسهم وزر الهروب وغيرها .
ويفيد KeyCode في فحص مفاتيح لوحة المفاتيح حيث يعيد رقم المفتاح , وبذلك يمكن كتابة كود يقوم بإظهار ارقام المفاتيح كمايلي :

code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   Me.Caption = KeyCode
End Sub


ملاحضة مهمة جداً :
لاحض أن KeyCode يرجع أرقام الأحرف فقط الأحرف الكبيرة بينما الأحرف الصغيرة يعطي رقمها كرقم حرف كبير على سبيل المثال : حرف A يرجع رقمة 65 بينما a يرجع رقمة 65 أيضاً وهذا بالطبع غير صحيح لذلك إذا اردنا معرفة الرقم المقابل للحرف الصغير نكتب الكود التالي
code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   Me.Caption = KeyCode + 32
End Sub

وهذا بدورة سيرجع الرقم المقابل للحرف الصغير فسيرجع a برقم 97 , وقد يستائل البعض لماذا زيدنا الرقم المرجع من KeyCode ب 32 , وهنا سأعتبر هذه الإجابة تمرين أطلبه من القراء الأعزاء .
الجزء الثاني Shift As Integer
هذا الجزء يعيد قيمة صحيحة تمثل أرقام المفاتيح Shift , Ctrl , Alt وهذه الأرقام هي :
1 يقابل Shift
2 يقابل Ctrl‏
4 يقابل Alt
بينما في حالات الجمع بينهم يعيد الأرقام التالية:
3 يقابل Ctrl + Shift
5 يقابل Shift + Alt
6 يقابل Ctrl + Alt
7 يقابل Ctrl + Alt + Shift

الثوابت المقابلة لأزرار
Shift = vbShiftMask
Ctrl = vbCtrlMask
Alt = vbAltMask
----------------------------------------
2- الحدث KeyUp
يفيد هذا الحدث عندما يتم رفع الضغط عن الزر في تنفيذ كود معين :
code:
Private Sub Command2_KeyUp(KeyCode As Integer, Shift As Integer)

End Sub

أجزاء الحدث :
تخضع لنفس الأجزاء السابقة .
ملاحضة هامة جداً :
الحدثين KeyDown , KeyUp
إذا كان موضع زر أمر CommandButtom على النموذج وكانت الخاصية للزر Cancel = True فإن الجزء KeyCod لايرجع قيمة لزر ECC .

----------------------------------------
3 - الحدث KeyPress :
ينفذ هاذا الحدث كود معين عندما يظغط المستخدم زرا في لوحة المفاتيح

code:
Private Sub Form_KeyPress(KeyAscii As Integer)

End Sub


الجزء(الباراميتر) KeyAscii :
يعيد قيمة صحيحة تمثل شفرة ASNI , يعيد الأرقام Asc للأحرف الكبيرة والصغيرة مع إمكانية توقيف عمل أي زر . و KeyAscii لايعيد ارقام المفاتح مثل F1.....F12 وغيرها .

وهنا نلاحظ ان الأرقام كما ذكرت سابقاً تمثل الحرف في جدول أسكي ولكي نتمكن من إضهار الرقم المقابل للحرف أو الحرف المقابل للرقم سنستخدم الدوال التالية :
Chr الصيغة العامة :
code:
CHR(ChrCode)


تستخدم هذه الدالة في إيجاد الحرف المقابل للرقم مثلاً الرقم 65 هو عبارة عن A كي نتمكن من إيجادة نستخدم الدالة السابقة مثل (Chr(65

الدالة Asc عكس الدالة السابقة تماماُ , حيث تستخدم لإيجاد الرقم المقابل للحرف .

مثال يوضح ذلك يبين كيفية جعل صندوق النص لايقبل إلى حروف كبيرة باستخدام هذا الحدث:

code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
 Dim char As String
 
   char = Chr(KeyAscii)
   KeyAscii = Asc(UCase(char))
End Sub


وهناك العديد من الفوائد لهذا الحدث منها توقيف أزرار معينة مثلاً كأن تجل صندوق النص لايقبل إلى أرقام :
code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
 Select Case Chr(KeyAscii)
   Case 0 To 9
    'Else نفذ أمر أودعة فاضي فإن تحقق الشرط فلن يستعدي جملة
   Case Else
    If KeyAscii = vbKeyBack Then Exit Sub
    KeyAscii = 0
  End Select
End Sub


والملاحض هنا إذا كان لدي أكثر من صندوق نص فهنا إما أجعل الصناديق كمصفوفة كي تم وضع الحدث لكل صناديق النصوص أو أقوم باستعداء الحدث السابق من نفس الحدث للكائن الأخر :
مثال أضف صندوق نص أخر إلى النموذج وكتب الكود التالي في الحدث لصندوق النص الثاني كمايلي :
code:
Private Sub Text2_KeyPress(KeyAscii As Integer)
  Text1_KeyPress KeyAscii
End Sub

لاحض الكود السابق : قمنا بتمرير KeyAscii إلى KeyAscii الخاص بالصندوق الأول ليخضع لنفس الكود, وبذلك سيتأثر الصندوق الثاني بنفس الكود الموجود في الحدث الخاص بالصندوق الأول.

ملاحضة هامة :
هناك خصائص تتعلق بهذا الحدث مثل الخاصية : KeyPreview
وهي تتبع بعض النوافذ مثل Form1 و UserControl و PropertyPage وضيفة هذه الخاصية مهمة فهي تحدد ما إذا كانت النافذه هي من ستستقبل احداث لوحة المفاتيح أولا أم الأدوات الموضوعة بداخلها : خير مثال هوا التالي :
ضع في النافذة Form زر أمر وصندوق نص ثم ضع في الحدث الخاص بصندوق النص نفس الكود السابق لمنع إدخال الأحرف إلى النص ثم ضع في حدث النافذة والزر لكود التالي :
Me.Caption = KeyCode
بعد ذلك قم بتشغيل البرنامج قم بالغط على مفاتح الأحرف (a , b t , f,f ) وغيرها ستلاحض عم كتابتها على شريط العنوان الخاص بالنافذة وهذا يعني أن حث صندوق النص هوا من بدأ أولاً قم بتغير الخاصية المذكورة من False إلى true لاحض ان ارقام الأحرف بدأت تضهر على النافذة عند الضغط على الأزرار وهذا يعني أن حدث Form هوا من بدا .

وهناك فوائد أخرى كثيرة , فقد ذكرت هذه الأمثلة لكي نتعرف علىأهمية هذا الحدث فعندما نود برمجة الحدث فأننا يجب أن نعرف ما هي أهميتة كي نحدد بالضبط ماهي الأحداث التي يجب ان ترفق مع الكائن الذي سنقوم ببرمجته لذي يجب أن نأخذ فكرة عامة قبل أن بدأ بالبرمجة .

----------------------------------------

4 - حدث MouseMove :
يستخدم هذا الحدث عند مرور الماوس فوق احد الكائنات أو النوافذ(كل من تملك هذا الحدث)
هذا الحدث مهم جداُ جداُ فمنة سنولد حدثين جديدين نسميهما MouseOver , MouseOut كما سيأتي لاحقاً

مثال :

code:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

End Sub


أول بارمتر أو أجزاء من الحدث :
Button :يعيد قيمة صحيحة تبين حالة زر الماوس وهذه القيم هي :
1 ضغط زر يساري
2 ضغط زر يميني
4 ضغط زر الوسط

الثوابت المناضرة للأرقام
1 = vbLeftButton
2 = vbRightButton
4 = vbMiddleButton

2 - Shift : يعمل نفس العمل في حدث KeyCode (راجع الحدث KeyCode ) .
3 - x يرجع قيمة عددية تبين الموقع الحالي لمؤشر الماوس بالنسبة للمستوى الأفقي للشاشة .
4 - y يرجع قيمة عددية تبين الموقع الحالي لمؤشر الماوس بالنسبة للمستوى العمودي للشاشة .

ملاحضة : x,y يعبر عنهما بالغة النضام المناسبة الموضوعة بواسطة الخصائص ScaleWidht , ScaleHeight , ScaleTop , ScaleLeft .


----------------------------------------

5 - الحدث MouseDown :
يحدث عندما يتم الضغط بالزر الأيمن على الكائن .
يخضع لنفس القيم التي يأخذها الحدث MouseMove


----------------------------------------

6 - الحدث MouseUp :
يحدث عندما يتم رفع الغط عن زر الماوس
يخضع لنفس القيم التي يأخذها الحدث MouseMove

ملاحضة هامة : x,y في الثلاثة الأحداث السابقة للماوس تختلف أو تتغير قيمتها من حدث لأخر , وبالتالي يجب لأن نحفض قيم x,y للقيم السابقة للحدث MouseDown في متغيرات كي يتم مثلأ مقارنتها لحضة الضغط وعند مرور الماوس MouseMove في بعض العمليات .

أنضر المثال المرفق :

بعد أن أخذنا جزء بسيط من الأحداث فإننا نستطيع الأن تقسم الأحداث إلى 4 أنواع وهي :

أولاً : أحداث خاصة بالوحة المفاتيح مثل (KeyDown, KeyPress, KeyUp)
ثانيا: أحداث خاصة بالماوس مثل مثل (MouseMove, MouseDown, MouseUp)
ثالثاً: أحداث مشتركة بين الماوس ولوحة المفاتيح مثل ( GotFocus, SetFocusClick,DblClick)
وهي تلك الأحداث التي يمكن أن تنفذ إما من خلال لوحة المفاتيح أو الماوس
رابعاً: أحداث خاصة :
وهذا النوع إما يتبع كائنات أو نوافذ ليس للماوس أو لوحة المفاتيح عنها دخل ,

فعند ما نود أن نبرمج حدث (نصمم) يجب أولاُ أن نحدد الأحداث من الأربعة الأقسام السابقة ثم نقوم بوضع الفكرة التي سنحتاجها للحدث لتنفيذ مهمة معينة .

-------------------------------------
فقط قليل من الإرهاق أوقفني عن مواصة الدرس لذلك سنقوم بإكمال الدرس في الدرس الرابع إن شاء الله
وسنتعرف في الدرس على القسم الرابع (أحداث خاصة ) بعدها نبدا بالتصميم بإذن الله وقد كنت أفكر أن أبدا على طول من الدرس الثاني بأخذ اساليب تصميم الخصائص والأحداث ولكن أحببت أن أضع أولا فكره عنها .

أرفقت المثال التالي بدل عن السابق نضراً لوجود مشكلة به :
بعد فتح الملف خذ الأداه ButtonSub7ByFawaz.ocx وضعها في مجلد النضام (System) أما إذا كان نضام التشغيل NT ضعها في مجلد (System32) . ثم قم بوضعها في قائمة Components ثم قم بعد ذلك بفتح المشروع

وإلى القاء في الدرس القادم , السلام عليكم ورحمة الله وبركاتة

لتنزيل الملف المرفق أنقر الرابط التالي: sub7form.zip بلا مسؤلية على المنتدى إن كان المرفق يحتوي على فيروسات أو وسائل تجسس
تم تحميل هذا الملف 139 مرة.


__________________
الإيمان يمان والحكمة يمانية

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

fawaz2000 غير متصل Old Post 08-07-2003 07:11 PM
إضغط هنا لمشاهدة هوية fawaz2000 إضغط هنا لإرسال رسالة شخصية لــ fawaz2000 إضغط هنا لإرسال بريد لــ fawaz2000 تفضل بزيارة صفحة fawaz2000 إبحث عن مواضيع fawaz2000 أضف fawaz2000 إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

h_a_c_k_e_r_g_y
مبرمج وخبير بالهكرز

تاريخ التسجيل » Nov 2001
البلد » Syria
عدد المشاركات » 812
بمعدل » 1.20 مشاركة لكل يوم
السلام عليكم

يعطيك العافية , لقد تعبت على هذا الشرح المفيد

سوف اقرا كل شيء قريباً


__________________
_-_المعرفة هي القوة_-_
لدي خبرة في الهاكرز والكراكرز
hackergy@hotvoice.com
--<برامجي>--
برنامج رمضاني + تقنية تشغيل صوت مستخرج من EXE
للأخوان الجدد بـ VBفتح صفحة انترنت + ارسال بريد الكتروني
اذا اردت ان يتوقف برنامجك لفترة تفضل دالة التأخير الزمني
تريد التحكم بقواعد بيانات عن طريق الأداة Data ؟ أنظر هنا
الآن كيفية التحكم بقاعدة بيانات عن بعد(على الشبكة المحلية أو الانترنت) مع التحقق بكلمة مرور للمستخدم

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

h_a_c_k_e_r_g_y غير متصل Old Post 08-07-2003 07:39 PM
إضغط هنا لمشاهدة هوية h_a_c_k_e_r_g_y إضغط هنا لإرسال رسالة شخصية لــ h_a_c_k_e_r_g_y إضغط هنا لإرسال بريد لــ h_a_c_k_e_r_g_y إبحث عن مواضيع h_a_c_k_e_r_g_y أضف h_a_c_k_e_r_g_y إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

fawaz2000
مبرمج محترف

تاريخ التسجيل » Nov 2001
البلد » اليمن - صنعاء
عدد المشاركات » 297
بمعدل » 0.43 مشاركة لكل يوم

تسلم أخي h_a_c_k_e_r_g_y

أخي سمير الصورة المرفقة رابطها شغال ومافي مشاكل جرب إعادة التحديث فقط فقد يثمر .
تصبحون على خير واتمنا إبلاغي هل اشتغل معكم البرنامج المرفق أم لا فهناك بعض المشاكل في إنتاج الكائنات بشكل Ocx


__________________
الإيمان يمان والحكمة يمانية

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

fawaz2000 غير متصل Old Post 08-07-2003 07:47 PM
إضغط هنا لمشاهدة هوية fawaz2000 إضغط هنا لإرسال رسالة شخصية لــ fawaz2000 إضغط هنا لإرسال بريد لــ fawaz2000 تفضل بزيارة صفحة fawaz2000 إبحث عن مواضيع fawaz2000 أضف fawaz2000 إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس

h_a_c_k_e_r_g_y
مبرمج وخبير بالهكرز

تاريخ التسجيل » Nov 2001
البلد » Syria
عدد المشاركات » 812
بمعدل » 1.20 مشاركة لكل يوم

وانت بخير

كلشي شغال عندي مية بالمية , والله حلو كتير يعطيك العافية حلو .


__________________
_-_المعرفة هي القوة_-_
لدي خبرة في الهاكرز والكراكرز
hackergy@hotvoice.com
--<برامجي>--
برنامج رمضاني + تقنية تشغيل صوت مستخرج من EXE
للأخوان الجدد بـ VBفتح صفحة انترنت + ارسال بريد الكتروني
اذا اردت ان يتوقف برنامجك لفترة تفضل دالة التأخير الزمني
تريد التحكم بقواعد بيانات عن طريق الأداة Data ؟ أنظر هنا
الآن كيفية التحكم بقاعدة بيانات عن بعد(على الشبكة المحلية أو الانترنت) مع التحقق بكلمة مرور للمستخدم

أخبر المراقب عن هذا الرد | رقم الـ IP | تحرير التوقيع

h_a_c_k_e_r_g_y غير متصل Old Post 08-07-2003 08:04 PM
إضغط هنا لمشاهدة هوية h_a_c_k_e_r_g_y إضغط هنا لإرسال رسالة شخصية لــ h_a_c_k_e_r_g_y إضغط هنا لإرسال بريد لــ h_a_c_k_e_r_g_y إبحث عن مواضيع h_a_c_k_e_r_g_y أضف h_a_c_k_e_r_g_y إلى قائمة أصدقائك تحرير/حذف رسالة رد بإقتباس
جميع الأوقات بتوقيت » المملكة العربية السعودية | الوقت الآن » 10:00 PM أكتب موضوع جديد    أكتب رد
 عدد الصفحات » (4): 1   2   3     الموضوع السابق   الموضوع التالي
[ عرض نسخة للطبع | إرسال الموضوع لصديق | إستقبل جديد هذا الموضوع ]

الإنتقال إلى:
تقييم هذا الموضوع:

قوانين المنتدى:
notتستطيع كتابة موضوع جديد                           
notتستطيع كتابة رد جديد
not تستطيع إرسال مرفقات جديدة
not تستطيع تعديل مشاركتك
شفرات HTML » غير متاح
شفرات vB » متاح
الإبتسامات » متاح
شفرة [IMG] » متاح
 

< إتصـــل بـنـــا - فيجوال بيسك للعرب > 
Copyright ©2000, 2001, Jelsoft Enterprises Limited.